# Makefile for FIFO full-duplex chat demo
# 作者：@zhixiong
# ----------------------------------------------------------
# 使用说明：
#   make        编译生成 chat_a 与 chat_b
#   make clean  删除可执行文件及残留的 FIFO
#   make rebuild先清理再重新编译
# ----------------------------------------------- -----------
#$<：表示依赖文件列表中的第一个文件  $@：表示目标文件

# 编译器与编译选项
CC      := gcc                  # 编译器
CFLAGS  := -Wall -Wextra -std=c99  # 打开常用警告、使用 C99 标准
LDFLAGS :=                     # 链接参数（当前为空）

# 最终生成的可执行文件名
TARGETS := chat_a chat_b

# 默认目标：当只输入 make 时，会依次生成 chat_a 和 chat_b
all: $(TARGETS)

# ----------------------------------------------------------
# 编译规则：如何把 .c 变成可执行文件
# ----------------------------------------------------------
# 规则 1：chat_a 的生成
chat_a: chat_a.c
	$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)  

# 规则 2：chat_b 的生成
chat_b: chat_b.c
	$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)

# ----------------------------------------------------------
# 清理规则：删除所有可执行文件和可能残留的 FIFO
# ----------------------------------------------------------
clean:
	rm -f $(TARGETS) fifo1 fifo2

# ----------------------------------------------------------
# 强制重新编译：先执行 clean，再执行 all
# ----------------------------------------------------------
rebuild: clean all

# ----------------------------------------------------------
# 伪目标声明：告诉 make 这些名字不是真实文件
# ----------------------------------------------------------
.PHONY: all clean rebuild